--- neofetch/neofetch	2021-04-05 21:41:49.707204300 +0300
+++ pisifetch/neofetch	2021-04-05 20:12:01.572216242 +0300
@@ -75,7 +75,6 @@
     info "Memory" memory
 
     # info "GPU Driver" gpu_driver  # Linux/macOS only
-    # info "CPU Usage" cpu_usage
     # info "Disk" disk
     # info "Battery" battery
     # info "Font" font
@@ -408,6 +407,13 @@
 # Flag:    --ip_timeout
 public_ip_timeout=2
 
+# Local IP interface
+#
+# Default: 'auto' (interface of default route)
+# Values:  'auto', 'en0', 'en1'
+# Flag:    --ip_interface
+local_ip_interface=('auto')
+
 
 # Desktop Environment
 
@@ -506,8 +512,10 @@
 # guayadeque
 # io.elementary.music
 # iTunes
+# Music
 # juk
 # lollypop
+# MellowPlayer
 # mocp
 # mopidy
 # mpd
@@ -721,8 +729,7 @@
 #
 # Default: 'off'
 # Values:  'bar', 'infobar', 'barinfo', 'off'
-# Flags:   --cpu_display
-#          --memory_display
+# Flags:   --memory_display
 #          --battery_display
 #          --disk_display
 #
@@ -731,7 +738,6 @@
 # infobar: 'info [---=======]'
 # barinfo: '[---=======] info'
 # off:     'info'
-cpu_display="off"
 memory_display="off"
 battery_display="off"
 disk_display="off"
@@ -743,8 +749,10 @@
 # Image backend.
 #
 # Default:  'ascii'
-# Values:   'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
-#           'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
+# Values:   'ascii', 'caca', 'catimg', 'chafa', 'jp2a', 'iterm2', 'off',
+#           'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty', 'ueberzug',
+#           'viu'
+
 # Flag:     --backend
 image_backend="ascii"
 
@@ -772,34 +780,34 @@
 # Default: 'auto'
 # Values:  'auto', 'distro_name'
 # Flag:    --ascii_distro
-# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
-#       "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
-#       ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
-#       Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
-#       BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
-#       Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
-#       Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
-#       DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
+# NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android, instantOS,
+#       Antergos, antiX, "AOSC OS", "AOSC OS/Retro", Apricity, ArchCraft,
+#       ArcoLinux, ArchBox, ARCHlabs, ArchStrike, XFerience, ArchMerge, Arch,
+#       Artix, Arya, Bedrock, Bitrig, BlackArch, BLAG, BlankOn, BlueLight,
+#       bonsai, BSD, BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
+#       Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, Condres,
+#       Container_Linux, CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS,
+#       Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
 #       EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
 #       FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
 #       gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
-#       Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
-#       Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
-#       LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
-#       Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
-#       Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
-#       NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
-#       OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
-#       Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
-#       popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
-#       Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
-#       Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
-#       Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
-#       SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
-#       openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
-#       Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
-#       Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
-#       and IRIX have ascii logos
+#       Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
+#       KSLinux, Kubuntu, LEDE, LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE,
+#       Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, Maui,
+#       Mer, Minix, LinuxMint, Live_Raizo, MX_Linux, Namib, Neptune, NetBSD,
+#       Netrunner, Nitrux, NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD,
+#       openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, OpenWrt,
+#       osmc, Oracle, OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix,
+#       TrueOS, PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
+#       Proxmox, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
+#       Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
+#       sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
+#       SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
+#       Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, t2,
+#       openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
+#       Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
+#       Ubuntu-Studio, Ubuntu, Univention, Venom, Void, semc, Obarun,
+#       windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
 # NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
 #       Use '{distro name}_old' to use the old logos.
 # NOTE: Ubuntu has flavor variants.
@@ -880,6 +888,14 @@
 #          --size
 image_size="auto"
 
+# Catimg block size.
+# Control the resolution of catimg.
+#
+# Default: '2'
+# Values:  '1', '2'
+# Flags:   --catimg_size
+catimg_size="2"
+
 # Gap between image and text
 #
 # Default: '3'
@@ -967,6 +983,10 @@
                     *) distro="Red Star OS $(awk -F'[^0-9*]' '$0=$2' /etc/redstar-release)"
                 esac
 
+            elif [[ -f /etc/armbian-release ]]; then
+                . /etc/armbian-release
+                distro="Armbian $DISTRIBUTION_CODENAME (${VERSION:-})"
+
             elif [[ -f /etc/siduction-version ]]; then
                 case $distro_shorthand in
                     on|tiny) distro=Siduction ;;
@@ -1432,7 +1452,7 @@
 
     d="$((s / 60 / 60 / 24)) days"
     h="$((s / 60 / 60 % 24)) hours"
-    m="$((s / 60 % 60)) mins"
+    m="$((s / 60 % 60)) minutes"
 
     # Remove plural if < 2.
     ((${d/ *} == 1)) && d=${d/s}
@@ -1446,41 +1466,52 @@
 
     uptime=${d:+$d, }${h:+$h, }$m
     uptime=${uptime%', '}
-    uptime=${uptime:-$s secs}
+    uptime=${uptime:-$s seconds}
 
     # Make the output of uptime smaller.
     case $uptime_shorthand in
-        on) ;;
+        on)
+            uptime=${uptime/ minutes/ mins}
+            uptime=${uptime/ minute/ min}
+            uptime=${uptime/ seconds/ secs}
+        ;;
 
         tiny)
             uptime=${uptime/ days/d}
             uptime=${uptime/ day/d}
             uptime=${uptime/ hours/h}
             uptime=${uptime/ hour/h}
-            uptime=${uptime/ mins/m}
-            uptime=${uptime/ min/m}
-            uptime=${uptime/ secs/s}
+            uptime=${uptime/ minutes/m}
+            uptime=${uptime/ minute/m}
+            uptime=${uptime/ seconds/s}
             uptime=${uptime//,}
         ;;
     esac
 }
 
 get_packages() {
+    # to adjust the number of pkgs per pkg manager
+    pkgs_h=0
+
     # has: Check if package manager installed.
     # dir: Count files or dirs in a glob.
     # pac: If packages > 0, log package manager name.
     # tot: Count lines in command output.
     has() { type -p "$1" >/dev/null && manager=$1; }
-    dir() { ((packages+=$#)); pac "$#"; }
+    dir() { ((packages+=$#)); pac "$(($#-pkgs_h))"; }
     pac() { (($1 > 0)) && { managers+=("$1 (${manager})"); manager_string+="${manager}, "; }; }
-    tot() { IFS=$'\n' read -d "" -ra pkgs <<< "$("$@")";((packages+=${#pkgs[@]}));pac "${#pkgs[@]}";}
+    tot() {
+	IFS=$'\n' read -d "" -ra pkgs <<< "$("$@")";
+	((packages+=${#pkgs[@]}));
+	pac "$((${#pkgs[@]}-pkgs_h))";
+    }
 
     # Redefine tot() for Bedrock Linux.
     [[ -f /bedrock/etc/bedrock-release && $PATH == */bedrock/cross/* ]] && {
         tot() {
             IFS=$'\n' read -d "" -ra pkgs <<< "$(for s in $(brl list); do strat -r "$s" "$@"; done)"
             ((packages+="${#pkgs[@]}"))
-            pac "${#pkgs[@]}"
+	    pac "$((${#pkgs[@]}-pkgs_h))";
         }
         br_prefix="/bedrock/strata/*"
     }
@@ -1489,8 +1520,9 @@
         Linux|BSD|"iPhone OS"|Solaris)
             # Package Manager Programs.
             has kiss       && tot kiss l
+            has cpt-list   && tot cpt-list
             has pacman-key && tot pacman -Qq --color never
-            has dpkg       && tot dpkg-query -f '.\n' -W
+            has apt        && tot apt list
             has rpm        && tot rpm -qa
             has xbps-query && tot xbps-query -l
             has apk        && tot apk info
@@ -1499,11 +1531,16 @@
             has lvu        && tot lvu installed
             has tce-status && tot tce-status -i
             has pkg_info   && tot pkg_info
-            has tazpkg     && tot tazpkg list && ((packages-=6))
+            has tazpkg     && pkgs_h=6 tot tazpkg list && ((packages-=6))
             has sorcery    && tot gaze installed
             has alps       && tot alps showinstalled
             has butch      && tot butch list
-            has mine       && tot mine -q
+            has swupd      && tot swupd bundle-list --quiet
+            has pisi       && tot pisi li
+
+            # 'mine' conflicts with minesweeper games.
+            [[ -f /etc/SDE-VERSION ]] &&
+                has mine && tot mine -q
 
             # Counting files/dirs.
             # Variables need to be unquoted here. Only Bedrock Linux is affected.
@@ -1533,9 +1570,13 @@
             }
 
             has nix-store && {
-                manager=nix-system  && tot nix-store -q --requisites /run/current-system/sw
-                manager=nix-user    && tot nix-store -q --requisites ~/.nix-profile
-                manager=nix-default && tot nix-store -q --requisites /nix/var/nix/profiles/default
+                nix-user-pkgs() {
+                    nix-store -qR ~/.nix-profile
+                    nix-store -qR /etc/profiles/per-user/"$USER"
+                }
+                manager=nix-system  && tot nix-store -qR /run/current-system/sw
+                manager=nix-user    && tot nix-user-pkgs
+                manager=nix-default && tot nix-store -qR /nix/var/nix/profiles/default
             }
 
             # pkginfo is also the name of a python package manager which is painfully slow.
@@ -1560,7 +1601,8 @@
 
             # Snap hangs if the command is run without the daemon running.
             # Only run snap if the daemon is also running.
-            has snap && ps -e | grep -qFm 1 snapd >/dev/null && tot snap list && ((packages-=1))
+            has snap && ps -e | grep -qFm 1 snapd >/dev/null && \
+		pkgs_h=1 tot snap list && ((packages-=1))
 
             # This is the only standard location for appimages.
             # See: https://github.com/AppImage/AppImageKit/wiki
@@ -1568,13 +1610,17 @@
         ;;
 
         "Mac OS X"|"macOS"|MINIX)
-            has port  && tot port installed && ((packages-=1))
+            has port  && pkgs_h=1 tot port installed && ((packages-=1))
             has brew  && dir /usr/local/Cellar/*
             has pkgin && tot pkgin list
 
             has nix-store && {
-                manager=nix-system && tot nix-store -q --requisites "/run/current-system/sw"
-                manager=nix-user   && tot nix-store -q --requisites "$HOME/.nix-profile"
+                nix-user-pkgs() {
+                    nix-store -qR ~/.nix-profile
+                    nix-store -qR /etc/profiles/per-user/"$USER"
+                }
+                manager=nix-system && tot nix-store -qR /run/current-system/sw
+                manager=nix-user   && tot nix-store -qR nix-user-pkgs
             }
         ;;
 
@@ -1590,9 +1636,9 @@
             esac
 
             # Scoop environment throws errors if `tot scoop list` is used
-            has scoop && dir ~/scoop/apps/* && ((packages-=1))
+            has scoop && pkgs_h=1 dir ~/scoop/apps/* && ((packages-=1))
 
-            # Count chocolatey packages.
+	    # Count chocolatey packages.
             [[ -d /cygdrive/c/ProgramData/chocolatey/lib ]] && \
                 dir /cygdrive/c/ProgramData/chocolatey/lib/*
         ;;
@@ -1600,11 +1646,11 @@
         Haiku)
             has pkgman && dir /boot/system/package-links/*
             packages=${packages/pkgman/depot}
-        ;;
+	;;
 
         IRIX)
             manager=swpkg
-            tot versions -b && ((packages-=3))
+            pkgs_h=3 tot versions -b && ((packages-=3))
         ;;
     esac
 
@@ -1687,8 +1733,17 @@
 
         Windows)
             case $distro in
-                "Windows 8"*|"Windows 10"*) de="Modern UI/Metro" ;;
-                *) de=Aero
+                *"Windows 10"*)
+                    de=Fluent
+                ;;
+
+                *"Windows 8"*)
+                    de=Metro
+                ;;
+
+                *)
+                    de=Aero
+                ;;
             esac
         ;;
 
@@ -1778,9 +1833,15 @@
         de_ver=${de_ver/* }
         de_ver=${de_ver//\"}
 
-        de="$de $de_ver"
+        de+=" $de_ver"
     fi
 
+    # TODO:
+    #  - New config option + flag: --de_display_server on/off ?
+    #  - Add display of X11, Arcan and anything else relevant.
+    [[ $de && $WAYLAND_DISPLAY ]] &&
+        de+=" (Wayland)"
+
     de_run=1
 }
 
@@ -1793,38 +1854,58 @@
         *)         ps_flags=(-e) ;;
     esac
 
-    if [[ $WAYLAND_DISPLAY ]]; then
-        wm=$(ps "${ps_flags[@]}" | grep -m 1 -o -F \
-                           -e arcan \
-                           -e asc \
-                           -e clayland \
-                           -e dwc \
-                           -e fireplace \
-                           -e gnome-shell \
-                           -e greenfield \
-                           -e grefsen \
-                           -e kwin \
-                           -e lipstick \
-                           -e maynard \
-                           -e mazecompositor \
-                           -e motorcar \
-                           -e orbital \
-                           -e orbment \
-                           -e perceptia \
-                           -e rustland \
-                           -e sway \
-                           -e ulubis \
-                           -e velox \
-                           -e wavy \
-                           -e way-cooler \
-                           -e wayfire \
-                           -e wayhouse \
-                           -e westeros \
-                           -e westford \
-                           -e weston)
+    if [[ -O "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}" ]]; then
+        if tmp_pid="$(lsof -t "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}" 2>&1)" ||
+           tmp_pid="$(fuser   "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}" 2>&1)"; then
+            wm="$(ps -p "${tmp_pid}" -ho comm=)"
+        else
+            # lsof may not exist, or may need root on some systems. Similarly fuser.
+            # On those systems we search for a list of known window managers, this can mistakenly
+            # match processes for another user or session and will miss unlisted window managers.
+            wm=$(ps "${ps_flags[@]}" | grep -m 1 -o -F \
+                               -e arcan \
+                               -e asc \
+                               -e clayland \
+                               -e dwc \
+                               -e fireplace \
+                               -e gnome-shell \
+                               -e greenfield \
+                               -e grefsen \
+                               -e kwin \
+                               -e lipstick \
+                               -e maynard \
+                               -e mazecompositor \
+                               -e motorcar \
+                               -e orbital \
+                               -e orbment \
+                               -e perceptia \
+                               -e rustland \
+                               -e sway \
+                               -e ulubis \
+                               -e velox \
+                               -e wavy \
+                               -e way-cooler \
+                               -e wayfire \
+                               -e wayhouse \
+                               -e westeros \
+                               -e westford \
+                               -e weston)
+        fi
 
     elif [[ $DISPLAY && $os != "Mac OS X" && $os != "macOS" && $os != FreeMiNT ]]; then
-        type -p xprop &>/dev/null && {
+        # non-EWMH WMs.
+        wm=$(ps "${ps_flags[@]}" | grep -m 1 -o \
+                           -e "[s]owm" \
+                           -e "[c]atwm" \
+                           -e "[f]vwm" \
+                           -e "[d]wm" \
+                           -e "[2]bwm" \
+                           -e "[m]onsterwm" \
+                           -e "[t]inywm" \
+                           -e "[x]11fs" \
+                           -e "[x]monad")
+
+        [[ -z $wm ]] && type -p xprop &>/dev/null && {
             id=$(xprop -root -notype _NET_SUPPORTING_WM_CHECK)
             id=${id##* }
             wm=$(xprop -id "$id" -notype -len 100 -f _NET_WM_NAME 8t)
@@ -1833,19 +1914,6 @@
             wm=${wm/\"*}
         }
 
-        # Fallback for non-EWMH WMs.
-        [[ $wm ]] ||
-            wm=$(ps "${ps_flags[@]}" | grep -m 1 -o \
-                               -e "[s]owm" \
-                               -e "[c]atwm" \
-                               -e "[f]vwm" \
-                               -e "[d]wm" \
-                               -e "[2]bwm" \
-                               -e "[m]onsterwm" \
-                               -e "[t]inywm" \
-                               -e "[x]11fs" \
-                               -e "[x]monad")
-
     else
         case $os in
             "Mac OS X"|"macOS")
@@ -1869,15 +1937,21 @@
             ;;
 
             Windows)
-                wm=$(tasklist | grep -m 1 -o -F \
-                                     -e bugn \
-                                     -e Windawesome \
-                                     -e blackbox \
-                                     -e emerge \
-                                     -e litestep)
+                wm=$(
+                    tasklist |
+
+                    grep -Fom 1 \
+                         -e bugn \
+                         -e Windawesome \
+                         -e blackbox \
+                         -e emerge \
+                         -e litestep
+                )
 
-                [[ $wm == blackbox ]] && wm="bbLean (Blackbox)"
-                wm=${wm:+$wm, }Explorer
+                [[ $wm == blackbox ]] &&
+                    wm="bbLean (Blackbox)"
+
+                wm=${wm:+$wm, }DWM.exe
             ;;
 
             FreeMiNT)
@@ -2097,7 +2171,7 @@
 
             # Select the right temperature file.
             for temp_dir in /sys/class/hwmon/*; do
-                [[ "$(< "${temp_dir}/name")" =~ (coretemp|fam15h_power|k10temp) ]] && {
+                [[ "$(< "${temp_dir}/name")" =~ (cpu_thermal|coretemp|fam15h_power|k10temp) ]] && {
                     temp_dirs=("$temp_dir"/temp*_input)
                     temp_dir=${temp_dirs[0]}
                     break
@@ -2196,8 +2270,7 @@
                 ;;
                 "OpenBSD"* | "Bitrig"*)
                     deg="$(sysctl hw.sensors | \
-                           awk -F '=| degC' '/lm0.temp|cpu0.temp/ {print $2; exit}')"
-                    deg="${deg/00/0}"
+                        awk -F'=|degC' '/(ksmn|adt|lm|cpu)0.temp0/ {printf("%2.1f", $2); exit}')"
                 ;;
             esac
         ;;
@@ -2336,47 +2409,6 @@
     fi
 }
 
-get_cpu_usage() {
-    case $os in
-        "Windows")
-            cpu_usage="$(wmic cpu get loadpercentage)"
-            cpu_usage="${cpu_usage/LoadPercentage}"
-            cpu_usage="${cpu_usage//[[:space:]]}"
-        ;;
-
-        *)
-            # Get CPU cores if unset.
-            if [[ "$cpu_cores" != "logical" ]]; then
-                case $os in
-                    "Linux" | "MINIX")  cores="$(grep -c "^processor" /proc/cpuinfo)" ;;
-                    "Mac OS X"|"macOS") cores="$(sysctl -n hw.logicalcpu_max)" ;;
-                    "BSD")              cores="$(sysctl -n hw.ncpu)" ;;
-                    "Solaris")          cores="$(kstat -m cpu_info | grep -c -F "chip_id")" ;;
-                    "Haiku")            cores="$(sysinfo -cpu | grep -c -F 'CPU #')" ;;
-                    "iPhone OS")        cores="${cpu/*\(}"; cores="${cores/\)*}" ;;
-                    "IRIX")             cores="$(sysconf NPROC_ONLN)" ;;
-                    "FreeMiNT")         cores="$(sysctl -n hw.ncpu)" ;;
-
-                    "AIX")
-                        cores="$(lparstat -i | awk -F':' '/Online Virtual CPUs/ {printf $2}')"
-                    ;;
-                esac
-            fi
-
-            cpu_usage="$(ps aux | awk 'BEGIN {sum=0} {sum+=$3}; END {print sum}')"
-            cpu_usage="$((${cpu_usage/\.*} / ${cores:-1}))"
-        ;;
-    esac
-
-    # Print the bar.
-    case $cpu_display in
-        "bar")     cpu_usage="$(bar "$cpu_usage" 100)" ;;
-        "infobar") cpu_usage="${cpu_usage}% $(bar "$cpu_usage" 100)" ;;
-        "barinfo") cpu_usage="$(bar "$cpu_usage" 100)${info_color} ${cpu_usage}%" ;;
-        *)         cpu_usage="${cpu_usage}%" ;;
-    esac
-}
-
 get_gpu() {
     case $os in
         "Linux")
@@ -2500,10 +2532,15 @@
 
         "Windows")
             while read -r line; do
-                prin "${subtitle:+${subtitle}${gpu_name}}" "$(trim "$line")"
-            done < <(wmic path Win32_VideoController get caption)
+                line=$(trim "$line")
+
+                [[ -z $win_gpu ]] || [[ -z "$line" ]] && {
+                    win_gpu=1
+                    continue
+                }
 
-            gpu=${gpu//Caption}
+                prin "${subtitle:+${subtitle}${gpu_name}}" "$line"
+            done < <(wmic path Win32_VideoController get caption)
         ;;
 
         "Haiku")
@@ -2520,7 +2557,7 @@
                 ;;
 
                 *)
-                    gpu="$(glxinfo | grep -F 'OpenGL renderer string')"
+                    gpu="$(glxinfo -B | grep -F 'OpenGL renderer string')"
                     gpu="${gpu/OpenGL renderer string: }"
                 ;;
             esac
@@ -2546,10 +2583,21 @@
                     "MemFree" | "Buffers" | "Cached" | "SReclaimable")
                         mem_used="$((mem_used-=${b/kB}))"
                     ;;
+
+                    # Available since Linux 3.14rc (34e431b0ae398fc54ea69ff85ec700722c9da773).
+                    # If detected this will be used over the above calculation for mem_used.
+                    "MemAvailable")
+                        mem_avail=${b/kB}
+                    ;;
                 esac
             done < /proc/meminfo
 
-            mem_used="$((mem_used / 1024))"
+            if [[ $mem_avail ]]; then
+                mem_used=$(((mem_total - mem_avail) / 1024))
+            else
+                mem_used="$((mem_used / 1024))"
+            fi
+
             mem_total="$((mem_total / 1024))"
         ;;
 
@@ -2693,8 +2741,10 @@
         "guayadeque"
         "io.elementary.music"
         "iTunes"
+        "Music"
         "juk"
         "lollypop"
+        "MellowPlayer"
         "mocp"
         "mopidy"
         "mpd"
@@ -2767,9 +2817,11 @@
         "xnoise"*)        get_song_dbus "xnoise" ;;
         "tauonmb"*)       get_song_dbus "tauon" ;;
         "olivia"*)        get_song_dbus "olivia" ;;
+        "exaile"*)        get_song_dbus "exaile" ;;
         "netease-cloud-music"*)        get_song_dbus "netease-cloud-music" ;;
         "plasma-browser-integration"*) get_song_dbus "plasma-browser-integration" ;;
         "io.elementary.music"*)        get_song_dbus "Music" ;;
+        "MellowPlayer"*)  get_song_dbus "MellowPlayer3" ;;
 
         "mpd"* | "mopidy"*)
             song="$(mpc -f '%artist% \n%album% \n%title%' current "${mpc_args[@]}")"
@@ -2805,22 +2857,18 @@
                                   string & "\n" & name of current track as string')"
         ;;
 
+        "music"*)
+            song="$(osascript -e 'tell application "Music" to artist of current track as¬
+                                  string & "\n" & album of current track as¬
+                                  string & "\n" & name of current track as string')"
+        ;;
+
         "banshee"*)
             song="$(banshee --query-artist --query-album --query-title |\
                     awk -F':' '/^artist/ {a=$2} /^album/ {b=$2} /^title/ {t=$2}
                                END {print a " \n" b " \n"t}')"
         ;;
 
-        "exaile"*)
-            # NOTE: Exaile >= 4.0.0 will support mpris2.
-            song="$(dbus-send --print-reply --dest=org.exaile.Exaile \
-                    /org/exaile/Exaile org.exaile.Exaile.Query |
-                    awk -F ':' '{sub(",[^,]*$", "", $3); t=$3;
-                                 sub(",[^,]*$", "", $4); a=$4;
-                                 sub(",[^,]*$", "", $5); b=$5}
-                                 END {print a " \n" b " \n" t}')"
-        ;;
-
         "muine"*)
             song="$(dbus-send --print-reply --dest=org.gnome.Muine /org/gnome/Muine/Player \
                     org.gnome.Muine.Player.GetCurrentSong |
@@ -2964,9 +3012,9 @@
 
             elif [[ -d /sys/class/drm ]]; then
                 for dev in /sys/class/drm/*/modes; do
-                    read -r resolution _ < "$dev"
+                    read -r single_resolution _ < "$dev"
 
-                    [[ $resolution ]] && break
+                    [[ $single_resolution ]] && resolution="${single_resolution}, ${resolution}"
                 done
             fi
         ;;
@@ -3215,7 +3263,8 @@
 
             [[ -f "${confs[0]}" ]] || return
 
-            term_font="$(awk -F ':|#' '/normal:/ {getline; print}' "${confs[0]}")"
+            term_font="$(awk '/normal:/ {while (!/family:/ || /#/)
+                         {if (!getline) {exit}} print; exit}' "${confs[0]}")"
             term_font="${term_font/*family:}"
             term_font="${term_font/$'\n'*}"
             term_font="${term_font/\#*}"
@@ -3306,7 +3355,7 @@
             QT_BINDIR="$(qtpaths --binaries-dir)" && PATH+=":$QT_BINDIR"
 
             IFS=$'\n' read -d "" -ra konsole_instances \
-                <<< "$(qdbus | awk '/org.kde.konsole/ {print $1}')"
+                <<< "$(qdbus | awk '/org.kde.'"$term"'/ {print $1}')"
 
             for i in "${konsole_instances[@]}"; do
                 IFS=$'\n' read -d "" -ra konsole_sessions <<< "$(qdbus "$i" | grep -F '/Sessions/')"
@@ -3414,15 +3463,16 @@
                 # like a font definition. NOTE: There is a slight limitation in this approach.
                 # Technically "Font Name" is a valid font. As it doesn't specify any font options
                 # though it is hard to match it correctly amongst the rest of the noise.
-                [[ -n "$binary" ]] && \
-                    term_font="$(strings "$binary" | grep -F -m 1 \
-                                                          -e "pixelsize=" \
-                                                          -e "size=" \
-                                                          -e "antialias=" \
-                                                          -e "autohint=")"
+                [[ -n "$binary" ]] &&
+                    term_font=$(
+                        strings "$binary" |
+
+                        grep -m 1 "*font[^2]"
+                    )
             fi
 
             term_font="${term_font/xft:}"
+            term_font="${term_font#*=}"
             term_font="${term_font/:*}"
         ;;
 
@@ -3557,7 +3607,7 @@
     for disk in "${disks[@]}"; do
         # Create a second array and make each element split at whitespace this time.
         IFS=" " read -ra disk_info <<< "$disk"
-        disk_perc=${disk_info[-2]/\%}
+        disk_perc=${disk_info[${#disk_info[@]} - 2]/\%}
 
         case $disk_percent in
             off) disk_perc=
@@ -3565,29 +3615,34 @@
 
         case $df_version in
             *befhikm*)
-                disk="$((disk_info[-4]/1024/1024))G / $((disk_info[-5]/1024/1024))G"
-                disk+="${disk_perc:+ ($disk_perc%)}"
+                disk=$((disk_info[${#disk_info[@]} - 4] / 1024 / 1024))G
+                disk+=" / "
+                disk+=$((disk_info[${#disk_info[@]} - 5] / 1024/ 1024))G
+                disk+=${disk_perc:+ ($disk_perc%)}
             ;;
 
             *)
-                disk="${disk_info[-4]/i} / ${disk_info[-5]/i}${disk_perc:+ ($disk_perc%)}"
+                disk=${disk_info[${#disk_info[@]} - 4]/i}
+                disk+=" / "
+                disk+=${disk_info[${#disk_info[@]} - 5]/i}
+                disk+=${disk_perc:+ ($disk_perc%)}
             ;;
         esac
 
         case $disk_subtitle in
             name)
-                disk_sub=${disk_info[*]::${#disk_info[@]}-5}
+                disk_sub=${disk_info[*]::${#disk_info[@]} - 5}
             ;;
 
             dir)
-                disk_sub=${disk_info[-1]/*\/}
-                disk_sub=${disk_sub:-${disk_info[-1]}}
+                disk_sub=${disk_info[${#disk_info[@]} - 1]/*\/}
+                disk_sub=${disk_sub:-${disk_info[${#disk_info[@]} - 1]}}
             ;;
 
             none) ;;
 
             *)
-                disk_sub=${disk_info[-1]}
+                disk_sub=${disk_info[${#disk_info[@]} - 1]}
             ;;
         esac
 
@@ -3674,6 +3729,9 @@
             battery="$(wmic Path Win32_Battery get EstimatedChargeRemaining)"
             battery="${battery/EstimatedChargeRemaining}"
             battery="$(trim "$battery")%"
+            state="$(wmic /NameSpace:'\\root\WMI' Path BatteryStatus get Charging)"
+            state="${state/Charging}"
+            [[ "$state" == *TRUE* ]] && battery_state="charging"
         ;;
 
         "Haiku")
@@ -3695,9 +3753,25 @@
 get_local_ip() {
     case $os in
         "Linux" | "BSD" | "Solaris" | "AIX" | "IRIX")
-            local_ip="$(ip route get 1 | awk -F'src' '{print $2; exit}')"
-            local_ip="${local_ip/uid*}"
-            [[ -z "$local_ip" ]] && local_ip="$(ifconfig -a | awk '/broadcast/ {print $2; exit}')"
+            if [[ "${local_ip_interface[0]}" == "auto" ]]; then
+                local_ip="$(ip route get 1 | awk -F'src' '{print $2; exit}')"
+                local_ip="${local_ip/uid*}"
+                [[ "$local_ip" ]] || local_ip="$(ifconfig -a | awk '/broadcast/ {print $2; exit}')"
+            else
+                for interface in "${local_ip_interface[@]}"; do
+                    local_ip="$(ip addr show "$interface" 2> /dev/null |
+                        awk '/inet / {print $2; exit}')"
+                    local_ip="${local_ip/\/*}"
+                    [[ "$local_ip" ]] ||
+                        local_ip="$(ifconfig "$interface" 2> /dev/null |
+                        awk '/broadcast/ {print $2; exit}')"
+                    if [[ -n "$local_ip" ]]; then
+                        prin "$interface" "$local_ip"
+                    else
+                        err "Local IP: Could not detect local ip for $interface"
+                    fi
+                done
+            fi
         ;;
 
         "MINIX")
@@ -3705,8 +3779,19 @@
         ;;
 
         "Mac OS X" | "macOS" | "iPhone OS")
-            local_ip="$(ipconfig getifaddr en0)"
-            [[ -z "$local_ip" ]] && local_ip="$(ipconfig getifaddr en1)"
+            if [[ "${local_ip_interface[0]}" == "auto" ]]; then
+                interface="$(route get 1 | awk -F': ' '/interface/ {printf $2; exit}')"
+                local_ip="$(ipconfig getifaddr "$interface")"
+            else
+                for interface in "${local_ip_interface[@]}"; do
+                    local_ip="$(ipconfig getifaddr "$interface")"
+                    if [[ -n "$local_ip" ]]; then
+                        prin "$interface" "$local_ip"
+                    else
+                        err "Local IP: Could not detect local ip for $interface"
+                    fi
+                done
+            fi
         ;;
 
         "Windows")
@@ -3809,11 +3894,11 @@
 [${text_padding}C${zws}}
 
         # Add block height to info height.
-        ((info_height+=block_range[1]>7?block_height+3:block_height+2))
+        ((info_height+=block_range[1]>7?block_height+2:block_height+1))
 
         case $col_offset in
-            "auto") printf '\n\e[%bC%b\n\n' "$text_padding" "${zws}${cols}" ;;
-            *) printf '\n\e[%bC%b\n\n' "$col_offset" "${zws}${cols}" ;;
+            "auto") printf '\n\e[%bC%b\n' "$text_padding" "${zws}${cols}" ;;
+            *) printf '\n\e[%bC%b\n' "$col_offset" "${zws}${cols}" ;;
         esac
     fi
 
@@ -3833,14 +3918,16 @@
         "ascii") print_ascii ;;
         "off") image_backend="off" ;;
 
-        "caca" | "chafa" | "jp2a" | "iterm2" | "termpix" |\
-        "tycat" | "w3m" | "sixel" | "pixterm" | "kitty" | "pot")
+        "caca" | "catimg" | "chafa" | "jp2a" | "iterm2" | "termpix" |\
+        "tycat" | "w3m" | "sixel" | "pixterm" | "kitty" | "pot", | "ueberzug" |\
+         "viu")
             get_image_source
 
             [[ ! -f "$image" ]] && {
                 to_ascii "Image: '$image_source' doesn't exist, falling back to ascii mode."
                 return
             }
+            [[ "$image_backend" == "ueberzug" ]] && wait=true;
 
             get_window_size
 
@@ -3858,9 +3945,9 @@
 
         *)
             err "Image: Unknown image backend specified '$image_backend'."
-            err "Image: Valid backends are: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'kitty',
-                                            'off', 'sixel', 'pot', 'pixterm', 'termpix', 'tycat',
-                                            'w3m')"
+            err "Image: Valid backends are: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a', 'iterm2',
+                                            'kitty', 'off', 'sixel', 'pot', 'pixterm', 'termpix',
+                                            'tycat', 'w3m', 'viu')"
             err "Image: Falling back to ascii mode."
             print_ascii
         ;;
@@ -3890,7 +3977,14 @@
     done <<< "${ascii_data//\$\{??\}}"
 
     # Fallback if file not found.
-    ((lines==1)) && { lines=; ascii_len=; image_source=auto; get_distro_ascii; print_ascii; return; }
+    ((lines==1)) && {
+        lines=
+        ascii_len=
+        image_source=auto
+        get_distro_ascii
+        print_ascii
+        return
+    }
 
     # Colors.
     ascii_data="${ascii_data//\$\{c1\}/$c1}"
@@ -4248,6 +4342,27 @@
             "$image"
         ;;
 
+
+        "ueberzug")
+            if [ "$wait" = true ];then
+                wait=false;
+            else
+                ueberzug layer --parser bash 0< <(
+                    declare -Ap ADD=(\
+                        [action]="add"\
+                        [identifier]="neofetch"\
+                        [x]=$xoffset [y]=$yoffset\
+                        [path]=$image\
+                    )
+                    read -rs
+                )
+            fi
+        ;;
+
+        "catimg")
+            catimg -w "$((width*catimg_size / font_width))" -r "$catimg_size" "$image"
+        ;;
+
         "chafa")
             chafa --stretch --size="$((width / font_width))x$((height / font_height))" "$image"
         ;;
@@ -4310,6 +4425,12 @@
             "$image"
         ;;
 
+        "viu")
+            viu \
+                -t -w "$((width / font_width))" -h "$((height / font_height))" \
+            "$image"
+        ;;
+
         "w3m")
             get_w3m_img_path
             zws='\xE2\x80\x8B\x20'
@@ -4678,6 +4799,10 @@
     kernel_machine="${uname[2]}"
 
     if [[ "$kernel_name" == "Darwin" ]]; then
+        # macOS can report incorrect versions unless this is 0.
+        # https://github.com/dylanaraps/neofetch/issues/1607
+        export SYSTEM_VERSION_COMPAT=0
+
         IFS=$'\n' read -d "" -ra sw_vers <<< "$(awk -F'<|>' '/key|string/ {print $3}' \
                             "/System/Library/CoreServices/SystemVersion.plist")"
         for ((i=0;i<${#sw_vers[@]};i+=2)) {
@@ -4845,6 +4970,7 @@
 
     --ip_host url               URL to query for public IP
     --ip_timeout int            Public IP timeout (in seconds).
+    --ip_interface value        Interface(s) to use for local IP
     --song_format format        Print the song data in a specific format (see config file).
     --song_shorthand on/off     Print the Artist/Album/Title on separate lines.
     --memory_percent on/off     Display memory percentage.
@@ -4862,7 +4988,7 @@
 
 COLOR BLOCKS:
     --color_blocks on/off       Enable/Disable the color blocks
-    --col_offset auto/num      Left-padding of color blocks
+    --col_offset auto/num       Left-padding of color blocks
     --block_width num           Width of color blocks in spaces
     --block_height num          Height of color blocks in lines
     --block_range num num       Range of colors to print as blocks
@@ -4874,8 +5000,6 @@
     --bar_length num            Length in spaces to make the bars.
     --bar_colors num num        Colors to make the bar.
                                 Set in this order: elapsed, total
-    --cpu_display mode          Bar mode.
-                                Possible values: bar, infobar, barinfo, off
     --memory_display mode       Bar mode.
                                 Possible values: bar, infobar, barinfo, off
     --battery_display mode      Bar mode.
@@ -4885,8 +5009,8 @@
 
 IMAGE BACKEND:
     --backend backend           Which image backend to use.
-                                Possible values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2',
-                                'off', 'sixel', 'tycat', 'w3m', 'kitty'
+                                Possible values: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a',
+                                'iterm2', 'off', 'sixel', 'tycat', 'w3m', 'kitty', 'viu'
     --source source             Which image or ascii file to use.
                                 Possible values: 'auto', 'ascii', 'wallpaper', '/path/to/img',
                                 '/path/to/ascii', '/path/to/dir/', 'command output' [ascii]
@@ -4896,6 +5020,7 @@
                                 NEW: neofetch --ascii \"\$(fortune | cowsay -W 30)\"
 
     --caca source               Shortcut to use 'caca' backend.
+    --catimg source             Shortcut to use 'catimg' backend.
     --chafa source              Shortcut to use 'chafa' backend.
     --iterm2 source             Shortcut to use 'iterm2' backend.
     --jp2a source               Shortcut to use 'jp2a' backend.
@@ -4906,6 +5031,8 @@
     --termpix source            Shortcut to use 'termpix' backend.
     --tycat source              Shortcut to use 'tycat' backend.
     --w3m source                Shortcut to use 'w3m' backend.
+    --ueberzug source           Shortcut to use 'ueberzug' backend
+    --viu source                Shortcut to use 'viu' backend
     --off                       Shortcut to use 'off' backend (Disable ascii art).
 
     NOTE: 'source; can be any of the following: 'auto', 'ascii', 'wallpaper', '/path/to/img',
@@ -4915,33 +5042,35 @@
     --ascii_colors x x x x x x  Colors to print the ascii art
     --ascii_distro distro       Which Distro's ascii art to print
 
-                                NOTE: AIX, Alpine, AlterLinux, Anarchy, Android, Antergos, antiX,
-                                \"AOSC OS\", \"AOSC OS/Retro\", Apricity, ArcoLinux, ArchBox,
-                                ARCHlabs, ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya,
-                                Bedrock, Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
-                                BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, Chapeau,
-                                Chrom, Cleanjaro, ClearOS, Clear_Linux, Clover, Condres,
-                                Container_Linux, CRUX, Cucumber, Debian, Deepin, DesaOS, Devuan,
-                                DracOS, DarkOs, DragonFly, Drauger, Elementary, EndeavourOS, Endless,
+                                NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android,
+                                instantOS, Antergos, antiX, \"AOSC OS\", \"AOSC OS/Retro\",
+                                Apricity, ArchCraft, ArcoLinux, ArchBox, ARCHlabs, ArchStrike,
+                                XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, Bitrig,
+                                BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, BunsenLabs,
+                                Calculate, Carbs, CentOS, Chakra, ChaletOS, Chapeau, Chrom,
+                                Cleanjaro, ClearOS, Clear_Linux, Clover, Condres, Container_Linux,
+                                CRUX, Cucumber, dahlia, Debian, Deepin, DesaOS, Devuan, DracOS,
+                                DarkOs, Itc, DragonFly, Drauger, Elementary, EndeavourOS, Endless,
                                 EuroLinux, Exherbo, Fedora, Feren, FreeBSD, FreeMiNT, Frugalware,
                                 Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, gNewSense, GNOME, GNU,
                                 GoboLinux, Grombyang, Guix, Haiku, Huayra, Hyperbola, janus, Kali,
                                 KaOS, KDE_neon, Kibojoe, Kogaion, Korora, KSLinux, Kubuntu, LEDE,
-                                LFS, Linux_Lite, LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS,
-                                Mandriva, Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
-                                Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, NuTyX,
-                                OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, OpenMandriva,
-                                OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, Parabola,
-                                Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, popos,
-                                Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
-                                Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
-                                Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
-                                Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
-                                SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
-                                openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
-                                Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
-                                Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
-                                and IRIX have ascii logos
+                                LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE, Lubuntu, Lunar, macos,
+                                Mageia, MagpieOS, Mandriva, Manjaro, Maui, Mer, Minix, LinuxMint,
+                                Live_Raizo, MX_Linux, Namib, Neptune, NetBSD, Netrunner, Nitrux,
+                                NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana,
+                                openmamba, OpenMandriva, OpenStage, OpenWrt, osmc, Oracle,
+                                OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix, TrueOS,
+                                PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
+                                Proxmox, Puppy, PureOS, Qubes, Quibian, Radix, Raspbian, Reborn_OS,
+                                Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith, Rosa,
+                                sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
+                                SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, SmartOS,
+                                Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap,
+                                t2, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
+                                Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
+                                Ubuntu-Studio, Ubuntu, Univention, Venom, Void, semc, Obarun,
+                                windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
 
                                 NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
 
@@ -4969,6 +5098,7 @@
                                 in some terminals emulators when using image mode.
     --size 00px | --size 00%    How to size the image.
                                 Possible values: auto, 00px, 00%, none
+    --catimg_size 1/2           Change the resolution of catimg.
     --crop_mode mode            Which crop mode to use
                                 Takes the values: normal, fit, fill
     --crop_offset value         Change the crop offset for normal mode.
@@ -5038,6 +5168,17 @@
             "--shell_version") shell_version="$2" ;;
             "--ip_host") public_ip_host="$2" ;;
             "--ip_timeout") public_ip_timeout="$2" ;;
+            "--ip_interface")
+                unset local_ip_interface
+                for arg in "$@"; do
+                    case "$arg" in
+                        "--ip_interface") ;;
+                        "-"*) break ;;
+                        *) local_ip_interface+=("$arg") ;;
+                    esac
+                done
+            ;;
+
             "--song_format") song_format="$2" ;;
             "--song_shorthand") song_shorthand="$2" ;;
             "--music_player") music_player="$2" ;;
@@ -5112,7 +5253,6 @@
                 bar_color_total="$3"
             ;;
 
-            "--cpu_display") cpu_display="$2" ;;
             "--memory_display") memory_display="$2" ;;
             "--battery_display") battery_display="$2" ;;
             "--disk_display") disk_display="$2" ;;
@@ -5120,8 +5260,9 @@
             # Image backend
             "--backend") image_backend="$2" ;;
             "--source") image_source="$2" ;;
-            "--ascii" | "--caca" | "--chafa" | "--jp2a" | "--iterm2" | "--off" | "--pot" |\
-            "--pixterm" | "--sixel" | "--termpix" | "--tycat" | "--w3m" | "--kitty")
+            "--ascii" | "--caca" | "--catimg" | "--chafa" | "--jp2a" | "--iterm2" | "--off" |\
+            "--pot" | "--pixterm" | "--sixel" | "--termpix" | "--tycat" | "--w3m" | "--kitty" |\
+            "--ueberzug" | "--viu")
                 image_backend="${1/--}"
                 case $2 in
                     "-"* | "") ;;
@@ -5132,6 +5273,7 @@
             # Image options
             "--loop") image_loop="on" ;;
             "--image_size" | "--size") image_size="$2" ;;
+            "--catimg_size") catimg_size="$2" ;;
             "--crop_mode") crop_mode="$2" ;;
             "--crop_offset") crop_offset="$2" ;;
             "--xoffset") xoffset="$2" ;;
@@ -5228,7 +5370,6 @@
                     info "GPU Driver" gpu_driver
                     info "Memory" memory
 
-                    info "CPU Usage" cpu_usage
                     info "Disk" disk
                     info "Battery" battery
                     info "Font" font
@@ -5250,7 +5391,6 @@
 
                 refresh_rate="on"
                 shell_version="on"
-                cpu_display="infobar"
                 memory_display="infobar"
                 disk_display="infobar"
                 cpu_temp="C"
@@ -5281,6 +5421,7 @@
 old_functions() {
     # Removed functions for backwards compatibility.
     get_line_break() { :; }
+    get_cpu_usage() { :; }
 }
 
 get_distro_ascii() {
@@ -5495,6 +5636,34 @@
 EOF
         ;;
 
+    "instantOS"*)
+        set_colors 4 6
+        read -rd '' ascii_data <<'EOF'
+
+${c1}
+     'cx0XWWMMWNKOd:'.
+  .;kNMMMMMMMMMMMMMWNKd'
+ 'kNMMMMMMWNNNWMMMMMMMMXo.
+,0MMMMMW0o;'..,:dKWMMMMMWx.
+OMMMMMXl.        .xNMMMMMNo
+WMMMMNl           .kWWMMMMO'
+MMMMMX;            oNWMMMMK,
+NMMMMWo           .OWMMMMMK,
+kWMMMMNd.        ,kWMMMMMMK,
+'kWMMMMWXxl:;;:okNMMMMMMMMK,
+ .oXMMMMMMMWWWMMMMMMMMMMMMK,
+   'oKWMMMMMMMMMMMMMMMMMMMK,
+     .;lxOKXXXXXXXXXXXXXXXO;......
+          ................,d0000000kd:.
+                          .kMMMMMMMMMW0;
+                          .kMMMMMMMMMMMX
+                          .xMMMMMMMMMMMW
+                           cXMMMMMMMMMM0
+                            :0WMMMMMMNx,
+                             .o0NMWNOc.
+EOF
+        ;;
+
         "Antergos"*)
             set_colors 4 6
             read -rd '' ascii_data <<'EOF'
@@ -5613,6 +5782,30 @@
 EOF
         ;;
 
+        "Archcraft"*)
+            set_colors 6 6 7 1
+            read -rd '' ascii_data <<'EOF'
+${c1}                   -m:
+                  :NMM+      .+
+                 +MMMMMo    -NMy
+                sMMMMMMMy  -MMMMh`
+               yMMMMMMMMMd` oMMMMd`
+             `dMMMMMMMMMMMm. /MMMMm-
+            .mMMMMMm-dMMMMMN- :NMMMN:
+           -NMMMMMd`  yMMMMMN: .mMMMM/
+          :NMMMMMy     sMMMMMM+ `dMMMMo
+         +MMMMMMs       +MMMMMMs `hMMMMy
+        oMMMMMMMds-      :NMMMMMy  sMMMMh`
+       yMMMMMNoydMMmo`    -NMMMMMd` +MMMMd.
+     `dMMMMMN-   `:yNNs`   .mMMMMMm. /MMMMm-
+    .mMMMMMm.        :hN/   `dMMMMMN- -NMMMN:
+   -NMMMMMd`           -hh`  `yMMMMMN: .mMMMM/
+  :NMMMMMy         `s`   :h.   oMMMMMM+ `-----
+ +MMMMMMo         .dMm.   `o.   +MMMMMMo
+sMMMMMM+         .mMMMN:    :`   :NMMMMMy
+EOF
+        ;;
+
         "arcolinux_small"*)
             set_colors 7 4
             read -rd '' ascii_data <<'EOF'
@@ -7116,30 +7309,30 @@
         ;;
 
         "Garuda"*)
-            set_colors 7 7
+            set_colors 7 7 3 7 2 4
             read -rd '' ascii_data <<'EOF'
-${c1}                  __,,,,,,,_
-            _╓╗╣╫╠╠╠╠╠╠╠╠╠╠╠╠╠╕╗╗┐_
-         ╥╢╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╥,
-       ╗╠╠╠╠╠╠╠╝╜╜╜╜╝╢╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠┐
-      ╣╠╠╠╠╠╠╠╠╢╣╢╗╕ , `"╘╠╠╠╠╠╠╠╠╠╠╠╠╠╠╔╥_
-    ╒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╕╙╥╥╜   `"╜╠╬╠╠╠╠╠╠╠╠╠╠╠╥,
-    ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╗╥╥╥╥╗╗╬╠╠╠╠╠╠╠╝╙╠╠╣╠╠╠╠╢┐
-   ╣╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╥╬╣╠╠╠╠╠╠╠╠╗
-  ╒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╗
-  ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
-  ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╬     ```"╜╝╢╠╠╡
- ╒╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╣,         ╘╠╪
- ╞╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╢┐        ╜
- `╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╗
- ,╬╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠"╕
- ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╗
- ╝^╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╝╣╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╡
-  ╔╜`╞┘╢╛╜ ╡╢╠"╚╠╠╜╝┌╞╞"╢╠╠╠╠╠╠╠╠╠╠╣╩╢╪
-     ╜╒"   `╜    `      ╜╙╕  └╣╠╠╠╠╕ ╞╙╖
-                                ╠╠╠
-                                 ╜
+
+${c3}
+                     .%;888:8898898:
+                   x;XxXB%89b8:b8%b88:
+                .8Xxd                8X:.
+              .8Xx;                    8x:.
+            .tt8x          ${c6}.d${c3}            x88;
+         .@8x8;          ${c6}.db:${c3}              xx@;
+       ${c4},tSXX°          .bbbbbbbbbbbbbbbbbbbB8x@;
+     .SXxx            bBBBBBBBBBBBBBBBBBBBbSBX8;
+   ,888S                                     pd!
+  8X88/                                       q
+  GBB.
+   ${c5}x%88        d888@8@X@X@X88X@@XX@@X@8@X.
+     dxXd    dB8b8b8B8B08bB88b998888b88x.
+      dxx8o                      .@@;.
+        dx88                   .t@x.
+          d:SS@8ba89aa67a853Sxxad.
+            .d988999889889899dd.
+
 EOF
+
         ;;
 
         "gentoo_small")
@@ -7664,6 +7857,60 @@
 EOF
         ;;
 
+        "LaxerOS"*)
+            set_colors 7 4
+            read -rd '' ascii_data <<'EOF'
+${c2}
+                    /.
+                 `://:-
+                `//////:
+               .////////:`
+              -//////////:`
+             -/////////////`
+            :///////////////.
+          `://////.```-//////-
+         `://///:`     .//////-
+        `//////:        `//////:
+       .//////-          `://///:`
+      -//////-            `://///:`
+     -//////.               ://////`
+    ://////`                 -//////.
+   `/////:`                   ./////:
+    .-::-`                     .:::-`
+
+.:://////////////////////////////////::.
+////////////////////////////////////////
+.:////////////////////////////////////:.
+
+EOF
+        ;;
+
+        "LibreELEC"*)
+            set_colors 2 3 7 14 13
+            read -rd '' ascii_data <<'EOF'
+${c1}          :+ooo/.      ${c2}./ooo+:
+${c1}        :+ooooooo/.  ${c2}./ooooooo+:
+${c1}      :+ooooooooooo:${c2}:ooooooooooo+:
+${c1}    :+ooooooooooo+-  ${c2}-+ooooooooooo+:
+${c1}  :+ooooooooooo+-  ${c3}--  ${c2}-+ooooooooooo+:
+${c1}.+ooooooooooo+-  ${c3}:+oo+:  ${c2}-+ooooooooooo+-
+${c1}-+ooooooooo+-  ${c3}:+oooooo+:  ${c2}-+oooooooooo-
+${c1}  :+ooooo+-  ${c3}:+oooooooooo+:  ${c2}-+oooooo:
+${c1}    :+o+-  ${c3}:+oooooooooooooo+:  ${c2}-+oo:
+${c4}     ./   ${c3}:oooooooooooooooooo:   ${c5}/.
+${c4}   ./oo+:  ${c3}-+oooooooooooooo+-  ${c5}:+oo/.
+${c4} ./oooooo+:  ${c3}-+oooooooooo+-  ${c5}:+oooooo/.
+${c4}-oooooooooo+:  ${c3}-+oooooo+-  ${c5}:+oooooooooo-
+${c4}.+ooooooooooo+:  ${c3}-+oo+-  ${c5}:+ooooooooooo+.
+${c4}  -+ooooooooooo+:  ${c3}..  ${c5}:+ooooooooooo+-
+${c4}    -+ooooooooooo+:  ${c5}:+ooooooooooo+-
+${c4}      -+oooooooooo+:${c5}:+oooooooooo+-
+${c4}        -+oooooo+:    ${c5}:+oooooo+-
+${c4}          -+oo+:        ${c5}:+oo+-
+${c4}            ..            ${c5}..
+EOF
+        ;;
+
         "Linux")
             set_colors fg 8 3
             read -rd '' ascii_data <<'EOF'
@@ -7747,26 +7994,26 @@
         "Lubuntu"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
-${c1}           `-mddhhhhhhhhhddmss`
-        ./mdhhhhhhhhhhhhhhhhhhhhhh.
-     :mdhhhhhhhhhhhhhhhhhhhhhhhhhhhm`
-   :ymhhhhhhhhhhhhhhhyyyyyyhhhhhhhhhy:
-  `odhyyyhhhhhhhhhy+-````./syhhhhhhhho`
- `hhy..:oyhhhhhhhy-`:osso/..:/++oosyyyh`
- dhhs   .-/syhhhhs`shhhhhhyyyyyyyyyyyyhs
-:hhhy`  yso/:+syhy/yhhhhhshhhhhhhhhhhhhh:
-hhhhho. +hhhys++oyyyhhhhh-yhhhhhhhhhhhhhs
-hhhhhhs-`/syhhhhyssyyhhhh:-yhhhhhhhhhhhhh
-hhhhhhs  `:/+ossyyhyyhhhhs -yhhhhhhhhhhhh
-hhhhhhy/ `syyyssyyyyhhhhhh: :yhhhhhhhhhhs
-:hhhhhhyo:-/osyhhhhhhhhhhho  ohhhhhhhhhh:
- sdhhhhhhhyyssyyhhhhhhhhhhh+  +hhhhhhhhs
- `shhhhhhhhhhhhhhhhhhhhhhy+` .yhhhhhhhh`
-  +sdhhhhhhhhhhhhhhhhhyo/. `/yhhhhhhhd`
-   `:shhhhhhhhhh+---..``.:+yyhhhhhhh:
-     `:mdhhhhhh/.syssyyyyhhhhhhhd:`
-        `+smdhhh+shhhhhhhhhhhhdm`
-           `sNmdddhhhhhhhddm-`
+${c1}           `.:/ossyyyysso/:.
+        `.:yyyyyyyyyyyyyyyyyy:.`
+      .:yyyyyyyyyyyyyyyyyyyyyyyy:.
+    .:yyyyyyyyyyyyyyyyyyyyyyyyyyyy:.
+   -yyyyyyyyyyyyyy${c2}+hNMMMNh+${c1}yyyyyyyyy-
+  :yy${c2}mNy+${c1}yyyyyyyy${c2}+Nmso++smMdhyysoo+${c1}yy:
+ -yy${c2}+MMMmmy${c1}yyyyyy${c2}hh${c1}yyyyyyyyyyyyyyyyyyy-
+.yyyy${c2}NMN${c1}yy${c2}shhs${c1}yyy${c2}+o${c1}yyyyyyyyyyyyyyyyyyyy.
+:yyyy${c2}oNM+${c1}yyyy${c2}+sso${c1}yyyyyyy${c2}ss${c1}yyyyyyyyyyyyy:
+:yyyyy${c2}+dNs${c1}yyyyyyy${c2}++${c1}yyyyy${c2}oN+${c1}yyyyyyyyyyyy:
+:yyyyy${c2}oMMmhysso${c1}yyyyyyyyyy${c2}mN+${c1}yyyyyyyyyyy:
+:yyyyyy${c2}hMm${c1}yyyyy${c2}+++${c1}yyyyyyy${c2}+MN${c1}yyyyyyyyyyy:
+.yyyyyyy${c2}ohmy+${c1}yyyyyyyyyyyyy${c2}NMh${c1}yyyyyyyyyy.
+ -yyyyyyyyyy${c2}++${c1}yyyyyyyyyyyy${c2}MMh${c1}yyyyyyyyy-
+  :yyyyyyyyyyyyyyyyyyyyy${c2}+mMN+${c1}yyyyyyyy:
+   -yyyyyyyyyyyyyyyyy${c2}+sdMMd+${c1}yyyyyyyy-
+    .:yyyyyyyyy${c2}hmdmmNMNdy+${c1}yyyyyyyy:.
+      .:yyyyyyy${c2}my${c1}yyyyyyyyyyyyyyy:.
+        `.:yyyy${c2}s${c1}yyyyyyyyyyyyy:.`
+           `.:/oosyyyysso/:.`
 EOF
         ;;
 
@@ -8086,6 +8333,31 @@
 EOF
         ;;
 
+        "Live Raizo"* | "Live_Raizo"*)
+            set_colors 3
+            read -rd '' ascii_data <<'EOF'
+${c1}             `......`
+        -+shmNMMMMMMNmhs/.
+     :smMMMMMmmhyyhmmMMMMMmo-
+   -hMMMMd+:. `----` .:odMMMMh-
+ `hMMMN+. .odNMMMMMMNdo. .yMMMMs`
+ hMMMd. -dMMMMmdhhdNMMMNh` .mMMMh
+oMMMm` :MMMNs.:sddy:-sMMMN- `NMMM+
+mMMMs  dMMMo sMMMMMMd yMMMd  sMMMm
+----`  .---` oNMMMMMh `---.  .----
+              .sMMy:
+               /MM/
+              +dMMms.
+             hMMMMMMN
+            `dMMMMMMm:
+      .+ss+sMNysMMoomMd+ss+.
+     +MMMMMMN` +MM/  hMMMMMNs
+     sMMMMMMm-hNMMMd-hMMMMMMd
+      :yddh+`hMMMMMMN :yddy/`
+             .hMMMMd:
+               `..`
+EOF
+        ;;
 
         "mx_small"*)
             set_colors 4 6 7
@@ -8271,7 +8543,7 @@
 EOF
         ;;
 
-        "NixOS"*)
+        "nixos_old"*)
             set_colors 4 6
             read -rd '' ascii_data <<'EOF'
 ${c1}          ::::.    ${c2}':::::     ::::'
@@ -8296,6 +8568,32 @@
 EOF
         ;;
 
+        "NixOS"*)
+            set_colors 4 6
+            read -rd '' ascii_data <<'EOF'
+${c1}          ▗▄▄▄       ${c2}▗▄▄▄▄    ▄▄▄▖
+${c1}          ▜███▙       ${c2}▜███▙  ▟███▛
+${c1}           ▜███▙       ${c2}▜███▙▟███▛
+${c1}            ▜███▙       ${c2}▜██████▛
+${c1}     ▟█████████████████▙ ${c2}▜████▛     ${c1}▟▙
+${c1}    ▟███████████████████▙ ${c2}▜███▙    ${c1}▟██▙
+${c2}           ▄▄▄▄▖           ▜███▙  ${c1}▟███▛
+${c2}          ▟███▛             ▜██▛ ${c1}▟███▛
+${c2}         ▟███▛               ▜▛ ${c1}▟███▛
+${c2}▟███████████▛                  ${c1}▟██████████▙
+${c2}▜██████████▛                  ${c1}▟███████████▛
+${c2}      ▟███▛ ${c1}▟▙               ▟███▛
+${c2}     ▟███▛ ${c1}▟██▙             ▟███▛
+${c2}    ▟███▛  ${c1}▜███▙           ▝▀▀▀▀
+${c2}    ▜██▛    ${c1}▜███▙ ${c2}▜██████████████████▛
+${c2}     ▜▛     ${c1}▟████▙ ${c2}▜████████████████▛
+${c1}           ▟██████▙       ${c2}▜███▙
+${c1}          ▟███▛▜███▙       ${c2}▜███▙
+${c1}         ▟███▛  ▜███▙       ${c2}▜███▙
+${c1}         ▝▀▀▀    ▀▀▀▀▘       ${c2}▀▀▀▘
+EOF
+        ;;
+
         "Nurunner"*)
             set_colors 4
             read -rd '' ascii_data <<'EOF'
@@ -8821,6 +9119,27 @@
 EOF
         ;;
 
+        "Pengwin"*)
+            set_colors 5 5 13
+            read -rd '' ascii_data <<'EOF'
+${c3}                     ...`
+${c3}                     `-///:-`
+${c3}                       .+${c2}ssys${c3}/
+${c3}                        +${c2}yyyyy${c3}o    ${c2}
+${c2}                        -yyyyyy:
+${c2}           `.:/+ooo+/:` -yyyyyy+
+${c2}         `:oyyyyyys+:-.`syyyyyy:
+${c2}        .syyyyyyo-`   .oyyyyyyo
+${c2}       `syyyyyy   `-+yyyyyyy/`
+${c2}       /yyyyyy+ -/osyyyyyyo/.
+${c2}       +yyyyyy-  `.-:::-.`
+${c2}       .yyyyyy-
+${c3}        :${c2}yyyyy${c3}o
+${c3}         .+${c2}ooo${c3}+
+${c3}           `.::/:.
+EOF
+        ;;
+
         "Peppermint"*)
             set_colors 1 15 3
             read -rd '' ascii_data <<'EOF'
@@ -8848,6 +9167,31 @@
 EOF
         ;;
 
+        "Pisi"*)
+            set_colors 12 7 6 1 8
+            read -rd '' ascii_data <<'EOF'
+${c1}   \Fv/!-                      `:?lzC
+${c1}   Q!::=zFx!  ${c2}`;v6WBCicl;`  ${c1},vCC\!::#.
+${c1}  ,%:::,'` ${c2}+#%@@FQ@@.   ,cF%i${c1}``-',::a?
+${c1}  +m:,'```${c2}}3,/@@Q\@@       "af-${c1} `-'"7f
+  =o'.` ${c2}/m'   :Q@:Qg         ,kl${c1}  `.|o
+  :k` '${c2}$+      'Narm           >d,${c1}  ii
+   #`${c2}!p.        `C ,            'd+${c1} %'
+${c2}   !0m                           `6Kv
+   =a                              m+
+  !A     !\L|:            :|L\!     $:
+ .8`     Q''%Q#'        '#Q%''Q     `0-
+ :6      E|.6QQu        uQQ6.|E      p:
+  i{      \jts9?        ?9stj\      u\
+   |a`            -''.            `e>
+    ,m+     ${c1}'^ !`${c2}s@@@@a${c1}'"`+`${c2}     >e'
+      !3|${c1}`|=>>r-  ${c2}'U%:${c1}  '>>>=:`\3!
+       'xopE|      ${c2}`'${c1}     `ledoz-
+    `;=>>+`${c2}`^llci/|==|/iclc;`${c1}'>>>>:
+   `^`+~          ${c2}````${c1}          !!-^
+EOF
+        ;;
+
         "popos_small"* | "pop_os_small"*)
             set_colors 6 7
             read -rd '' ascii_data <<'EOF'
@@ -9063,6 +9407,30 @@
 EOF
         ;;
 
+        "Quibian"*)
+            set_colors 3 7
+            read -rd '' ascii_data <<'EOF'
+${c1}            `.--::::::::--.`
+        `.-:::-..``   ``..-::-.`
+      .::::-`   .${c2}+${c1}:``       `.-::.`
+    .::::.`    -::::::-`       `.::.
+  `-:::-`    -:::::::::--..``     .::`
+ `::::-     .${c2}oy${c1}:::::::---.```.:    `::`
+ -::::  `.-:::::::::::-.```         `::
+.::::.`-:::::::::::::.               `:.
+-::::.:::::::::::::::                 -:
+::::::::::::::::::::`                 `:
+:::::::::::::::::::-                  `:
+:::::::::::::::::::                   --
+.:::::::::::::::::`                  `:`
+`:::::::::::::::::                   -`
+ .:::::::::::::::-                  -`
+  `::::::::::::::-                `.`
+    .::::::::::::-               ``
+      `.--:::::-.
+EOF
+        ;;
+
         "Radix"*)
             set_colors 1 2
             read -rd '' ascii_data <<'EOF'
@@ -9090,16 +9458,15 @@
         "Raspbian_small"*)
             set_colors 2 1
             read -rd '' ascii_data <<'EOF'
-${c1}   .~~.   .~~.
-  '. \\ ' ' / .'
-${c2}   .~ .~~~..~.
-  : .~.'~'.~. :
- ~ (   ) (   ) ~
-( : '~'.~.'~' : )
- ~ .~ (   ) ~. ~
-  (  : '~' :  )
-   '~ .~~~. ~'
-       '~'
+${c1}   ..    ,.
+  :oo: .:oo:
+  'o\\o o/o:
+${c2} :: . :: . ::
+:: :::  ::: ::
+:'  '',.''  ':
+ ::: :::: :::
+ ':,  ''  ,:'
+   ' ~::~ '
 EOF
         ;;
 
@@ -9962,28 +10329,28 @@
         ;;
 
         "Ubuntu Cinnamon"* | "Ubuntu-Cinnamon"*)
-            set_colors 1
+            set_colors 1 7
             read -rd '' ascii_data <<'EOF'
-${c1}            .-:/++oooo++/:-.
-        `:/oooooooooooooooooo/-`
-      -/oooooooooooooooooooo+ooo/-
-    .+oooooooooooooooooo+/-`.ooooo+.
-   :oooooooooooo+//:://++:. .ooooooo:
-  /oooooooooo+o:`.----.``./+/oooooooo/
- /ooooooooo+. +ooooooooo+:``/ooooooooo/
-.ooooooooo: .+ooooooooooooo- -ooooooooo.
-/oooooo/o+ .ooooooo:`+oo+ooo- :oooooooo/
-ooo+:. .o: :ooooo:` .+/. ./o+:/ooooooooo
-oooo/-`.o: :ooo/` `/+.     ./.:ooooooooo
-/oooooo+o+``++. `:+-          /oooooooo/
-.ooooooooo/``  -+:`          :ooooooooo.
- /ooooooooo+--+/`          .+ooooooooo/
-  /ooooooooooo+.`      `.:++:oooooooo/
-   :oooooooooooooo++++oo+-` .ooooooo:
-    .+ooooooooooooooooooo+:..ooooo+.
-      -/oooooooooooooooooooooooo/-
-        `-/oooooooooooooooooo/:`
-            .-:/++oooo++/:-.
+${c1}            .-/+oooooooo+/-.
+        `:+oooooooooooooooooo+:`
+      -+oooooooooooooooooooooooo+-
+    .ooooooooooooooooooo${c2}:ohNd${c1}oooooo.
+   /oooooooooooo${c2}:/+oo++:/ohNd${c1}ooooooo/
+  +oooooooooo${c2}:osNdhyyhdNNh+:+${c1}oooooooo+
+ /ooooooooo${c2}/dN/${c1}ooooooooo${c2}/sNNo${c1}ooooooooo/
+.ooooooooo${c2}oMd:${c1}oooooooooooo${c2}:yMy${c1}ooooooooo.
++ooooo${c2}:+o/Md${c1}oooooo${c2}:sm/${c1}oo/ooo${c2}yMo${c1}oooooooo+
+ooo${c2}:sdMdosMo${c1}ooooo${c2}oNMd${c1}//${c2}dMd+${c1}o${c2}:so${c1}ooooooooo
+oooo${c2}+ymdosMo${c1}ooo${c2}+mMm${c1}+/${c2}hMMMMMh+hs${c1}ooooooooo
++oooooo${c2}:${c1}:${c2}/Nm:${c1}/${c2}hMNo${c1}:y${c2}MMMMMMMMMM+${c1}oooooooo+
+.ooooooooo${c2}/NNMNy${c1}:o${c2}NMMMMMMMMMMo${c1}ooooooooo.
+/oooooooooo${c2}:yh:${c1}+m${c2}MMMMMMMMMMd/${c1}ooooooooo/
+  +oooooooooo${c2}+${c1}/h${c2}mMMMMMMNds//o${c1}oooooooo+
+   /oooooooooooo${c2}+:////:o/ymMd${c1}ooooooo/
+    .oooooooooooooooooooo${c2}/sdh${c1}oooooo.
+      -+oooooooooooooooooooooooo+-
+        `:+oooooooooooooooooo+:`
+            .-/+oooooooo+/-.
 EOF
         ;;
 
@@ -10038,26 +10405,27 @@
         "Ubuntu MATE"* | "Ubuntu-MATE"*)
             set_colors 2 7
             read -rd '' ascii_data <<'EOF'
-${c1}           `:+shmNNMMNNmhs+:`
-        .odMMMMMMMMMMMMMMMMMMdo.
-      /dMMMMMMMMMMMMMMMmMMMMMMMMd/
-    :mMMMMMMMMMMMMNNNNM/`/yNMMMMMMm:
-  `yMMMMMMMMMms:..-::oM:    -omMMMMMy`
- `dMMMMMMMMy-.odNMMMMMM:    -odMMMMMMd`
- hMMMMMMMm-.hMMy/....+M:`/yNm+mMMMMMMMh
-/MMMMNmMN-:NMy`-yNMMMMMmNyyMN:`dMMMMMMM/
-hMMMMm -odMMh`sMMMMMMMMMMs sMN..MMMMMMMh
-NMMMMm    `/yNMMMMMMMMMMMM: MM+ mMMMMMMN
-NMMMMm    `/yNMMMMMMMMMMMM: MM+ mMMMMMMN
-hMMMMm -odMMh sMMMMMMMMMMs oMN..MMMMMMMh
-/MMMMNNMN-:NMy`-yNMMMMMNNsyMN:`dMMMMMMM/
- hMMMMMMMm-.hMMy/....+M:.+hNd+mMMMMMMMh
- `dMMMMMMMMy-.odNMMMMMM:    :smMMMMMMd`
-   yMMMMMMMMMms/..-::oM:    .+dMMMMMy
-    :mMMMMMMMMMMMMNNNNM: :smMMMMMMm:
-      /dMMMMMMMMMMMMMMMdNMMMMMMMd/
-        .odMMMMMMMMMMMMMMMMMMdo.
-           `:+shmNNMMNNmhs+:`
+${c1}            .:/+oossssoo+/:.`
+        `:+ssssssssssssssssss+:`
+      -+sssssssssssssss${c2}y${c1}ssssssss+-
+    .osssssssssssss${c2}yy${c1}ss${c2}mMmh${c1}ssssssso.
+   /sssssssss${c2}ydmNNNmmd${c1}s${c2}mMMMMNdy${c1}sssss/
+ `+ssssssss${c2}hNNdy${c1}sssssss${c2}mMMMMNdy${c1}ssssss+`
+ +sssssss${c2}yNNh${c1}ss${c2}hmNNNNm${c1}s${c2}mMmh${c1}s${c2}ydy${c1}sssssss+
+-sssss${c2}y${c1}ss${c2}Nm${c1}ss${c2}hNNh${c1}ssssss${c2}y${c1}s${c2}hh${c1}ss${c2}mMy${c1}sssssss-
++ssss${c2}yMNdy${c1}ss${c2}hMd${c1}ssssssssss${c2}hMd${c1}ss${c2}NN${c1}sssssss+
+sssss${c2}yMMMMMmh${c1}sssssssssssss${c2}NM${c1}ss${c2}dMy${c1}sssssss
+sssss${c2}yMMMMMmhy${c1}ssssssssssss${c2}NM${c1}ss${c2}dMy${c1}sssssss
++ssss${c2}yMNdy${c1}ss${c2}hMd${c1}ssssssssss${c2}hMd${c1}ss${c2}NN${c1}sssssss+
+-sssss${c2}y${c1}ss${c2}Nm${c1}ss${c2}hNNh${c1}ssssssss${c2}dh${c1}ss${c2}mMy${c1}sssssss-
+ +sssssss${c2}yNNh${c1}ss${c2}hmNNNNm${c1}s${c2}mNmh${c1}s${c2}ymy${c1}sssssss+
+  +ssssssss${c2}hNNdy${c1}sssssss${c2}mMMMMmhy${c1}ssssss+
+   /sssssssss${c2}ydmNNNNmd${c1}s${c2}mMMMMNdh${c1}sssss/
+    .osssssssssssss${c2}yy${c1}ss${c2}mMmdy${c1}sssssso.
+      -+sssssssssssssss${c2}y${c1}ssssssss+-
+        `:+ssssssssssssssssss+:`
+            .:/+oossssoo+/:.
+
 EOF
         ;;
 
@@ -10149,6 +10517,32 @@
 EOF
         ;;
 
+        "Univention"*)
+            set_colors 1 7
+            read -rd '' ascii_data <<'EOF'
+${c1}         ./osssssssssssssssssssssso+-
+       `ohhhhhhhhhhhhhhhhhhhhhhhhhhhhy:
+       shhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh-
+   `-//${c2}sssss${c1}/hhhhhhhhhhhhhh+${c2}s${c1}.hhhhhhhhh+
+ .ohhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sss${c1}+hhhhhhh+
+.yhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}ssss${c1}:hhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}sssss${c1}.hhhhhhhhhhhhhh.${c2}sssss${c1}yhhhhh+
++hhhhhy${c2}ssssss${c1}+yhhhhhhhhhhy/${c2}ssssss${c1}yhhhhh+
++hhhhhh:${c2}sssssss${c1}:hhhhhhh+${c2}.ssssssss${c1}yhhhhy.
++hhhhhhh+`${c2}ssssssssssssssss${c1}hh${c2}sssss${c1}yhhho`
++hhhhhhhhhs+${c2}ssssssssssss${c1}+hh+${c2}sssss${c1}/:-`
+-hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhho
+ :yhhhhhhhhhhhhhhhhhhhhhhhhhhhh+`
+   -+ossssssssssssssssssssss+:`
+EOF
+        ;;
+
         "Venom"*)
             set_colors 8 4
             read -rd '' ascii_data <<'EOF'
@@ -10205,6 +10599,23 @@
             ~|Invnvnvvnvvvnnv}+`
                -~|{*l}*|~
 EOF
+
+        ;;
+
+       	"semc"*)
+            set_colors 2 8 1
+            read -rd '' ascii_data <<'EOF'
+${c1}            /\
+     ______/  \
+    /      |()| ${c2}E M C
+${c1}   |   (-- |  |
+    \   \  |  |
+.----)   | |__|
+|_______/ / ${c3}"${c1}  \
+              ${c3}"
+            "
+EOF
+
         ;;
 
         "Obarun"*)
@@ -10283,26 +10694,26 @@
         "Xubuntu"*)
             set_colors 4 7 1
             read -rd '' ascii_data <<'EOF'
-${c1}           `-/osyhddddhyso/-`
-        .+yddddddddddddddddddy+.
-      :yddddddddddddddddddddddddy:
-    -yddddddddddddddddddddhdddddddy-
-   odddddddddddyshdddddddh`dddd+ydddo
- `yddddddhshdd-   ydddddd+`ddh.:dddddy`
- sddddddy   /d.   :dddddd-:dy`-ddddddds
-:ddddddds    /+   .dddddd`yy`:ddddddddd:
-sdddddddd`    .    .-:/+ssdyodddddddddds
-ddddddddy                  `:ohddddddddd
-dddddddd.                      +dddddddd
-sddddddy                        ydddddds
-:dddddd+                      .oddddddd:
- sdddddo                   ./ydddddddds
- `yddddd.              `:ohddddddddddy`
-   oddddh/`      `.:+shdddddddddddddo
-    -ydddddhyssyhdddddddddddddddddy-
-      :yddddddddddddddddddddddddy:
-        .+yddddddddddddddddddy+.
-           `-/osyhddddhyso/-`
+${c1}           `.:/ossyyyysso/:.
+        `.yyyyyyyyyyyyyyyyyyyy.`
+      `yyyyyyyyyyyyyyyyyyyyyyyyyy`
+    `yyyyyyyyyyyyyyyyyyyy${c2}::${c1}yyyyyyyy`
+   .yyyyyyyyyyy${c2}/+:${c1}yyyyyyy${c2}ds${c1}yyy${c2}+y${c1}yyyy.
+  yyyyyyy${c2}:o/${c1}yy${c2}dMMM+${c1}yyyyy${c2}/M+${c1}y${c2}:hM+${c1}yyyyyy
+ yyyyyyy${c2}+MMMy${c1}y${c2}mMMMh${c1}yyyyy${c2}yM::mM+${c1}yyyyyyyy
+`yyyyyyy${c2}+MMMMysMMMd${c1}yyyyy${c2}dh:mN+${c1}yyyyyyyyy`
+yyyyyyyy${c2}:NMMMMmMMMMmmdhyy+/y:${c1}yyyyyyyyyyy
+yyyyyyyy${c2}+MMMMMMMMMMMMMMMMMMNho:${c1}yyyyyyyyy
+yyyyyyyy${c2}mMMMMMMMMMMMMMMMMMMMMMMy${c1}yyyyyyyy
+yyyyyyy${c2}+MMMMMMMMMMMMMMMMMMMMMMMM/${c1}yyyyyyy
+`yyyyyy${c2}sMMMMMMMMMMMMMMMMMMMMMMmo${c1}yyyyyyy`
+ yyyyyy${c2}oMMMMMMMMMMMMMMMMMMMmy+${c1}yyyyyyyyy
+  yyyyy${c2}:mMMMMMMMMMMMMMMNho/${c1}yyyyyyyyyyy
+   .yyyy${c2}:yNMMMMMMMNdyo:${c1}yyyyyyyyyyyyy.
+    `yyyyyy${c2}:/++/::${c1}yyyyyyyyyyyyyyyyy`
+      `yyyyyyyyyyyyyyyyyyyyyyyyyy`
+        `.yyyyyyyyyyyyyyyyyyyy.`
+           `.:/oosyyyysso/:.`
 EOF
         ;;
                 "IRIX"*)
@@ -10553,6 +10964,7 @@
     # w3m-img: Draw the image a second time to fix
     # rendering issues in specific terminal emulators.
     [[ $image_backend == *w3m* ]] && display_image
+    [[ $image_backend == *ueberzug* ]] && display_image
 
     # Add neofetch info to verbose output.
     err "Neofetch command: $0 $*"
